Expand description
Fast &[u8]
to integer parser
SIMD (fast) parsing is supported on x86_64 (SSE4.1, AVX2) and on Arm64 (aarch64, Neon), but this library works even if you don’t have SIMD supported cpu (and it will be still faster than str::parse).
Supports negative values and validates the input.
Supported output types: u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, usize, isize.
Has good test coverage, and can be considered safe.
To enable SIMD it needs the target-feature
or target-cpu
flags set, or it will fallback to non-SIMD functions.
You can copy the ./.cargo/config.toml
to your project, or use one of the following environment variables:
-
RUSTFLAGS="-C target-feature=+sse2,+sse3,+sse4.1,+ssse3,+avx,+avx2"
for x86_64 -
RUSTFLAGS="-C target-feature=+neon"
for Arm64 -
RUSTFLAGS="-C target-cpu=native"
will optimize for your current cpu
If you have &str
then use .as_bytes()
Supports no_std
with --no-default-features
Examples
let val: u64 = atoi_simd::parse(b"1234").unwrap();
assert_eq!(val, 1234_u64);
assert_eq!(atoi_simd::parse::<i64>(b"-2345"), Ok(-2345_i64));
assert_eq!(atoi_simd::parse_until_invalid::<u64>(b"123something_else"), Ok((123_u64, 3)));
// a drop-in replacement for `str::parse`
assert_eq!(atoi_simd::parse_skipped::<u64>(b"+000000000000000000001234"), Ok(1234_u64));
Enums
Traits
- Note: all functions are
#[inline(always)]
- Note: all functions are
#[inline(always)]
Functions
- Parses slice of digits, and checks first ‘-’ char for signed integers.
- Parses negative integer. Slice must not contain ‘-’ sign.
- Parses positive integer.
- Parses slice of digits. Was made to be used as a drop-in replacement for
str::parse
. Checks first ‘-’ char for signed integers. Skips ‘+’ char and extra zeroes at the beginning. It’s slower thanparse()
. - Parses slice of digits until it reaches invalid character, and checks first ‘-’ char for signed integers. Returns parsed value and parsed size of the slice.
- Parses negative integer until it reaches invalid character. Slice must not contain ‘-’ sign. Returns parsed value and parsed size of the slice.
- Parses positive integer until it reaches invalid character. Returns parsed value and parsed size of the slice.